﻿#pragma once
#include "afx.h"
#include "cstringt.h"
#include "locale.h"
#include "atlsimpstr.h"
//#include "GetUsbRecord.h"
#include <GetSysSecurityInfo.h>
//#include "GetIERecordsEx.h"
//#include "GetUsbRecordEx.h"
// CDisposeResult


//// 4688日志, 进程创建
//typedef struct _ProcessCreation_
//{
//	TCHAR event_level[16];				// 事件级别		"信息"
//	TCHAR date[64];						// 日期+时间	"2018/7/5 14:28:46"
//	TCHAR source[64];					// 来源			"Microsoft-Windows-Security-Auditing"
//	TCHAR event_id[16];					// 事件ID		"4688"
//	TCHAR task_type[64];				// 任务类别		"进程创建"
//// 创建者主题
//	TCHAR Cr_security_ID[64];			// 安全ID		"USERCHI-1JL7L9M\Administrator"
//	TCHAR Cr_account_name[64];			// 账户名		"Administrator"
//	TCHAR Cr_account_region[64];		// 账户域		"USERCHI-1JL7L9M"
//	TCHAR Cr_LoginID[64];				// 登录ID		"0x1483E106"
//// 目标主题
//	TCHAR Tg_security_ID[64];			// 安全ID		"NULL SID"
//	TCHAR Tg_account_name[64];			// 账户名		"-"
//	TCHAR Tg_account_region[64];		// 账户域		"-"
//	TCHAR Tg_loginID[64];				// 登录ID		"0x0"
//// 进程信息
//	TCHAR New_processID[16];			// 新进程ID		"0x2900"
//	TCHAR New_processName[256];			// 新进程名称	"\Device\HarddiskVolume10\ThreatDetectionSystem\Updater.exe"
//	TCHAR token_type[16];				// 令牌提升类型	"%%1936"
//	TCHAR Mandatory_Label[64];			// 强制性标签	"Mandatory Label\High Mandatory Level"
//	TCHAR creator_processID[16];		// 创建者进程ID		"0x1b8c"
//	TCHAR creator_processName[256];		// 创建者进程名称	"C:\Windows\explorer.exe"
//}_CreateProcess, *p_CreateProcess;	// 4688 进程创建 日志完整信息


class CDisposeResult : public CWnd
{
	DECLARE_DYNAMIC(CDisposeResult)

public:
	CDisposeResult();
	virtual ~CDisposeResult();


public:
	// 将html模板读入容器
	void MyReadHtml();

	// 将主机日志html模板读入容器
	void MyReadLogHtml();

	void GetResult(int type, LPARAM lParam);

	// 生成 html文件
	void BuildHtml();

	// 生成 主机日志 html文件
	void BuildLogHtml();

	// 清空 存放结果的容器 (Unicode编码)
	static void MyClearVector();

	// 清空 存放结果的容器 (UTF-8, 由Unicode转换的) 
	static void MyClearVector2();

	// 清空 存放html模板的容器 
	static void MyClearVector3();

	// 清空 存放 即时通讯软件和邮件客户端的软件
	static void MyClearSoftWare();

	// 将 Unicode编码的结果 转成 UTF-8
	static void MyTransResult();

	// 判断存放结果的盘符 剩余空间是否足够写文件
	BOOL IsFreeSpace(ULONGLONG FreeSpace);

	// 判断有哪些即时通讯软件和邮件客户端
	void IsSoftWare(PSOFTWAREINFO pSoftWare);

	void SoftWareInsertDb();

	// 即时通讯软件 邮件客户端 写xml文件
	//static void WriteXml();

	// 在数据库中插入唯一标识, 避免结果包重复导入
	static void ImportFlag();

	///////////New↓///////
	void DisplayHtml();


	///////////New↑///////
public:
	///////////New↓///////
	CString m_strModPath;
	///////////New↑///////

	// Mac地址
	static CString m_strMacAddr;

	// 常见的 即时通讯软件名
	std::vector<CString> m_vIMsoftware;
	// 常见的 邮件客户端
	std::vector<CString> m_vEmailSoftware;
	// 常见的 虚拟机软件
	std::vector<CString> m_vVMsoftware;

	// 主机中存在的 即时通讯软件 信息
	static std::vector<PSOFTWAREINFO> m_vInstalledIM;
	// 主机中存在的 邮件客户端 信息
	static std::vector<PSOFTWAREINFO> m_vInstalledEmail;
	// 主机中存在的 虚拟机软件 信息
	static std::vector<PSOFTWAREINFO> m_vInstalledVM;
	// 主机中存在的 其他软件(非通讯软件和邮件客户端)
	static std::vector<PSOFTWAREINFO> m_vInstalledOther;


	//存放 文件操作痕迹
	static std::vector<PFILEOPRATIONLIGHTCHECK> m_vFilOprationLightCheck;
	/*
	// 存放 联网痕迹-深度 采集结果
	static vector<PNETDEEPRESULT> m_vNetDeepResult;

	// 存放 介质痕迹-深度 采集结果
	static vector<PUSBDEEPRESULT> m_vUsbDeepResult;

	*/
	// 存放 html 结构 模板
	static std::vector<std::pair<char*, int>> m_vCaption;		// <!--Web文件beg--> 以上部分
	static std::vector<std::pair<char*, int>> m_vContent1;	// <!--Web日志beg-->
	static std::vector<std::pair<char*, int>> m_vContent2;
	static std::vector<std::pair<char*, int>> m_vContent3;
	static std::vector<std::pair<char*, int>> m_vContent4;
	static std::vector<std::pair<char*, int>> m_vContent5;
	static std::vector<std::pair<char*, int>> m_vContent6;
	static std::vector<std::pair<char*, int>> m_vContent65;
	static std::vector<std::pair<char*, int>> m_vContent7;
	static std::vector<std::pair<char*, int>> m_vContent8;
	static std::vector<std::pair<char*, int>> m_vContent9;
	static std::vector<std::pair<char*, int>> m_vContent10;
	static std::vector<std::pair<char*, int>> m_vContent11;
	static std::vector<std::pair<char*, int>> m_vContent12;
	static std::vector<std::pair<char*, int>> m_vContent13;
	static std::vector<std::pair<char*, int>> m_vContent14;
	static std::vector<std::pair<char*, int>> m_vContent15;
	static std::vector<std::pair<char*, int>> m_vContent16;
	static std::vector<std::pair<char*, int>> m_vContent17;
	static std::vector<std::pair<char*, int>> m_vContent18;
	static std::vector<std::pair<char*, int>> m_vContent19;
	static std::vector<std::pair<char*, int>> m_vContent20;
	static std::vector<std::pair<char*, int>> m_vContent21;
	static std::vector<std::pair<char*, int>> m_vContent22;
	static std::vector<std::pair<char*, int>> m_vEnding;

	// 存放 html 结构模板 <主机日志 部分>
	static std::vector<std::pair<char*, int>> m_vLogCaption1;
	static std::vector<std::pair<char*, int>> m_vLogCaption2;
	static std::vector<std::pair<char*, int>> m_vLogCaption3;
	static std::vector<std::pair<char*, int>> m_vLogCaption4;

	// 存放 采集 结果 Unicode编码
	static std::vector<std::vector<CString>> m_vWebLogRst;
	static std::vector<std::vector<CString>> m_vWebFileRst;
	static std::vector<std::vector<CString>> m_vSysLogRst;
	static std::vector<std::vector<CString>> m_vAppLogRst;
	static std::vector<std::vector<CString>> m_vSecLogRst;
	static std::vector<std::vector<CString>> m_vFileTraceRst;
	static std::vector<std::vector<CString>> m_vNetLigRst;
	static std::vector<std::vector<CString>> m_vNetDeepRst;
	static std::vector<std::vector<CString>> m_vPortRst;
	static std::vector<std::vector<CString>> m_vProcessRst;
	static std::vector<std::vector<CString>> m_vServiceRst;
	static std::vector<std::vector<CString>> m_vSoftWareRst;
	static std::vector<std::vector<CString>> m_vAuthSecRst;
	static std::vector<std::vector<CString>> m_vAccountSecRst;
	static std::vector<std::vector<CString>> m_vServiceSecRst;
	static std::vector<std::vector<CString>> m_vPasswordSecRst;
	static std::vector<std::vector<CString>> m_vNetSecRst;
	static std::vector<std::vector<CString>> m_vFileSecRst;
	static std::vector<std::vector<CString>> m_vFileShareRst;
	static std::vector<std::vector<CString>> m_vUSBLigRst;
	static std::vector<std::vector<CString>> m_vUSBDeepRst;
	static std::vector<std::vector<CString>> m_vSysPatchRst;
	static std::vector<std::vector<CString>> m_vNetWorkCardRst;
	// 存放 采集结果  UTF-8  写入文件
	static std::vector<std::vector<char*>> m_vWebLogRstLast;
	static std::vector<std::vector<char*>> m_vWebFileRstLast;
	static std::vector<std::vector<char*>> m_vSysLogRstLast;
	static std::vector<std::vector<char*>> m_vAppLogRstLast;
	static std::vector<std::vector<char*>> m_vSecLogRstLast;
	static std::vector<std::vector<char*>> m_vFileTraceRstLast;
	static std::vector<std::vector<char*>> m_vNetLigRstLast;
	static std::vector<std::vector<char*>> m_vNetDeepRstLast;
	static std::vector<std::vector<char*>> m_vPortRstLast;
	static std::vector<std::vector<char*>> m_vProcessRstLast;
	static std::vector<std::vector<char*>> m_vServiceRstLast;
	static std::vector<std::vector<char*>> m_vSoftWareRstLast;
	static std::vector<std::vector<char*>> m_vAuthSecRstLast;
	static std::vector<std::vector<char*>> m_vAccountSecRstLast;
	static std::vector<std::vector<char*>> m_vServiceSecRstLast;
	static std::vector<std::vector<char*>> m_vPasswordSecRstLast;
	static std::vector<std::vector<char*>> m_vNetSecRstLast;
	static std::vector<std::vector<char*>> m_vFileSecRstLast;
	static std::vector<std::vector<char*>> m_vFileShareRstLast;
	static std::vector<std::vector<char*>> m_vUSBLigRstLast;
	static std::vector<std::vector<char*>> m_vUSBDeepRstLast;
	static std::vector<std::vector<char*>> m_vSysPatchRstLast;
	static std::vector<std::vector<char*>> m_vNetWorkCardRstLast;

	//清空容器
	void FreeVectorMap(std::vector<std::map<std::string,std::wstring>>&vt);
	//系统日志
	static CYunDunUtility *util_sysLog;
	static std::vector<std::map<std::string,std::wstring>> m_svSysLog;

	static CYunDunUtility*util_secLog;
	static std::vector<std::map<std::string,std::wstring>> m_svSecLog;
	

protected:
	DECLARE_MESSAGE_MAP()
};



unsigned Folctosqlite3Thread(LPVOID lpvParam);

